import axios from "axios";

//axios配置 自定义实例
const config = {
    baseURL: "/api",
};
//axios实例化,相当于 是axios的一个副本，功能与axios一样
const Axios = axios.create (config);

// 添加请求拦截器
Axios.interceptors.request.use (
    function ( config ) {
        // 在发送请求之前做些什么
        return config;
    },
    function ( error ) {
        // 对请求错误做些什么
        return Promise.reject (error);
    }
);

// 添加响应拦截器
Axios.interceptors.response.use (
    function ( response ) {
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        if ( response.status === 200 ) {
            return response.data;
        } else {
            return console.warn (response);
        }
    },
    function ( error ) {
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        return Promise.reject (error);
    }
);

const http = ( url, method, data, config ) => {

    return Axios.request ({
        url,
        method,
        [method.toUpperCase () === "GET" ? "params" : "data"]: data,
        ...config,
    });
};
export default http;